DISCUSSION
The
ATSUHighlightText function highlights a range of text using the highlight information in the graphics port.
Before calculating the highlighting dimensions,
ATSUHighlightText turns off any previously set line justification, rotation, width alignment, descent, and ascent values and treats the text as a single line. It then examines the text layout object to make sure that the style runs cover the entire range of text. If there are gaps between style runs,
ATSUHighlightText assigns the characters in the gap to the style run following the gap. If there is no style run at the beginning of the range of text,
ATSUHighlightText assigns these characters to the first style run it can find. If there no style run at the end of the range of text,
ATSUHighlightText assigns the remaining characters to the last style run it can find.
If you want to highlight a range of text that spans multiple lines, you should call
ATSUHighlightText for each line of text that is being highlighted, even if all the lines are in the same text layout object. You should adjust the
iHighlightStart parameter to reflect the beginning of each line to be highlighted.
You can extend highlighting across tab stops by setting the bits specified by the mask constants
kATSLineFillOutToWidth and
kATSLineImposeNoAngleForEnds, described in
Line Layout Option Mask Constants.
ATSUHighlightText uses the previously set line ascent and descent values to calculate the height of the highlighted region. If these values have not been set for the line,
ATSUHighlightText uses the line ascent and descent values set for the text layout object containing the line. If these are not set, it uses the default values.